1. Field of Invention
The present invention pertains to the field of computer software. More particularly, this invention relates to a mechanism for non-invasive extensions to software applications.
2. Art Background
Vendors of software systems commonly market such systems to a wide variety of differing types of business end-users. Such software vendors typically provide software applications and software tools with generic functions that appeal to a variety of business types.
For example, vendors of database systems commonly provide software applications such as database entry forms and database report forms with generic database access functions. Typically, such generic software applications enable end-users to add information to the database and to create reports from information contained in the database. However, such generic software applications are usually not tuned to the specific needs of any one particular business end-user. As a consequence, end-users commonly customize the generic software applications provided by the software vendor.
In prior systems, such end-user customization usually involves user-specific modifications of application program source code. Typically, an end-user acquires a copy of the application source code from the software vendor and thereafter enters user-specific modification to the source code. Such a technique requires that the end-user first become familiar with the nature of the source code for the application in order to enter the appropriate customizations. The modified source code is then recompiled to provide a unique executable version of the software application at the user site.
Unfortunately, such a prior technique of modifying application source code severely complicates the process of providing support for software applications. For example, the end-user must usually re-enter source code changes for the particular customization after each new release or update of the software application. Such re-entry of the same customization to multiple versions of source code typically increases the overall cost of maintaining database software at the customer site.
In addition, such prior techniques of customizing source code complicate the process of isolating software problems at a user site. For example, such customization of source code raises an issue as to whether the originally shipped source code from the software vendor has a software bug or whether the user-specific customization of the source code gave rise to a software bug. Such uncertainties usually hinder the overall efficiency of providing software support at customer sites.